import axios from 'axios';
import {message} from 'antd';

import {BASE_URL, TIMEOUT, CODE_MESSAGE} from "./config";
import store from "../store";

/**
 request({
  url: '',        //  相对路径
  data: {},       //  前端传到后端的数据
  method: 'post'  //  请求方式post或者get,默认get
}).then(res => {  //  成功后的回调

}).catch(err => { //  失败后的回调

});
 */

const request = axios.create({
  baseURL: BASE_URL,
  timeout: TIMEOUT
});

const loading = loadStatus => ({
  type: 'LOADING',
  payload: loadStatus
});

// 请求拦截器
request.interceptors.request.use(config => {
  config.forbiddenLogo || store.dispatch(loading(true));    // 发送网络请求时, 在界面的中间位置显示Loading组件
  // 将请求的数据序列化
  if (config.method === 'post') {
    config.headers['content-type'] = 'application/json;charset=utf-8';
    (typeof config.data === "object") && (config.data = JSON.stringify(config.data));
  }
  return config;
}, () => message.error('Failed requests'));

// 响应拦截器
request.interceptors.response.use(res => {
  store.dispatch(loading(false)); //  请求结束后,取消Loading组件
  return res.data;  //  后台返回的数据
}, err => {
  store.dispatch(loading(false));
  //  TODO: 暂时取消状态提示,后台会返回提示
 /* if (err && err.response) {
    switch (err.response.status) {
      case 400:
        message.error(CODE_MESSAGE["400"]);
        break;
      case 401:
        message.error(CODE_MESSAGE["401"]);
        break;
      case 403:
        message.error(CODE_MESSAGE["403"]);
        break;
      case 404:
        message.error(CODE_MESSAGE["404"]);
        break;
      case 406:
        message.error(CODE_MESSAGE["406"]);
        break;
      case 410:
        message.error(CODE_MESSAGE["410"]);
        break;
      case 422:
        message.error(CODE_MESSAGE["422"]);
        break;
      case 500:
        message.error(CODE_MESSAGE["500"]);
        break;
      case 502:
        message.error(CODE_MESSAGE["502"]);
        break;
      case 503:
        message.error(CODE_MESSAGE["503"]);
        break;
      case 504:
        message.error(CODE_MESSAGE["504"]);
        break;
      default:
        message.error("其他错误信息!");
    }
  }*/
  return err;
});

export default request;


